1. Field
The instant disclosure relates generally to computing environments and the processing tasks within computing environments, and more particularly, to reallocating or offloading processing tasks and other resources from one computing environment to another computing environment.
2. Description of the Related Art
In the area of computing and computing processes, heterogeneous computing environments often lead to circumstances where processing tasks can be performed more efficiently in one computing environment over another computing environment. For example, in a computing environment where an interpreter is running as an application within an instantiation of an operating system, the software running within the interpreter also instantiates, or emulates, an operating system. Thus, it is not uncommon for algorithms and other processing tasks to run more efficiently in one operating system or the other based on one or more characteristics of the particular operating system, such as the available operator set, the speed of execution and/or the feature set of the particular operating system.
For example, in existing computer processing architectures, an interpreter can run as an application inside an operating system executing on a particular processor. In general, an interpreter is a special class of program that interprets instructions, e.g., opcodes and operators, that are different than the native instruction set of the machine upon or application within which the interpreter is executing. Typically, the interpreter receives the code to be executed and translates the non-native computer instructions, typically written in a high-level programming language, into native computer instructions.
As such, the interpreter emulates an instruction set and processor environment that typically is foreign to the particular processor and operating system. However, the emulated environment typically is capable of running an emulated (non-native) operating system. Therefore, it may be advantageous to offload various processing tasks from one computing environment to another computing environment, e.g., from the interpreter emulated environment to the operating system computing environment inside which the interpreter application is running.
Conventional methods exist for offloading work from one computing environment to another computing environment. However, such conventional methods, which typically are network-based processes, vary widely in complexity and performance. For example, many conventional method invoke one or more external functions to perform various offloading tasks. However, when offloading tasks from an emulated computing environment, many conventional approaches require relatively intimate knowledge of the interpreter, and can be vulnerable to programming errors in the program library within the native operating system, which could fault the interpreter itself, and result in a crash of the entire interpreter emulated environment.